﻿<p><em>IfcGridPlacement</em> provides a specialization of <em>IfcObjectPlacement</em> in which
the placement and axis direction of the object coordinate system is defined by a reference to the design grid as defined in <em>IfcGrid</em>.</p>
<p>The location of the object coordinate system is given by the attribute <em>PlacementLocation</em>. It is defined as an
<em>IfcVirtualGridIntersection</em>, that is, an intersection between two grid axes with optional offsets.</p>
<p>The axis direction of the x-axis of the object coordinate
system is given either:</p>
<ul>
<li><em>PlacementRefDirection</em> = NIL: by the tangent of the first grid axis (<em>PlacementLocation.IntersectingAxes[1]</em>) at the virtual intersection (maybe using the offset curve, if <em>PlacementLocation.OffsetDistances</em> is given);</li>
<li><em>PlacementRefDirection</em> = <em>IfcDirection</em>: by the explicitly provided direction information;</li>
<li><em>PlacementRefDirection</em> = <em>IfcVirtualGridIntersection</em>: by the tangent between the virtual grid intersection of <em>PlacementLocation</em> and the virtual grid intersection of <em>PlacementRefDirection</em>. Offsets as potentially provided in the <em>IfcVirtualGridIntersection</em>'s of <em>PlacementLocation</em> and <em>PlacementRefDirection</em> have to be taken into account.</li>
</ul>
<p>The direction of the y-axis of the <em>IfcGridPlacement</em> is the orthogonal complement to the x-axis. The plane defined by the x and y axis shall be co-planar to the xy plane of the local placement of the <em>IfcGrid</em>. </p> 
<p>The direction of the z-axis is the orientation of the cross product of the x-axis and the y-axis, i.e. the z-axis of the <em>IfcGridPlacement</em> shall be co-linear to the z-axis of the local placement of the <em>IfcGrid</em>.</p>

<blockquote class="note">
NOTE&nbsp; The <em>IfcGrid</em> local placement, that can be provided relative to the local placement of another spatial structure element, has to be taken into account for calculating the absolute placement of the virtual grid intersection.
</blockquote>
<blockquote class="note">
NOTE&nbsp; The <em>PlacementLocation.OffsetDistances[3]</em> and the <em>PlacementRefDirection.OffsetDistances[3]</em> shall either not be assigned or should have the same z offset value.
</blockquote>

<p>The following figures show the usage of placement location and direction for an <em>IfcGridPlacement</em>.</p>

<table cellpadding="2" cellspacing="2" summary="Geometry use definition">
<tr><td align="left" valign="top"><img src="../../../figures/ifcgridplacement-layout1.png" alt="without ref direction" border="0" height="300" width="400"></td>
<td style="vertical-align:bottom">
<p>Figure 4 illustrates the case where <em>PlacementRefDirection</em> is <u>not</u> given - the object coordinate system is defined by:</p>
<ul>
<li><u>its location</u>: given by the virtual grid intersection of <em>PlacementLocation</em></li>
<li><u>its x-axis direction</u>: given by the tangent of the first intersecting axis in the offset location of the virtual grid intersection</li>
</ul>
</td>
</tr>
<tr><td><p class="figure">Figure 4 &mdash; Grid placement</p></td>
<td>&nbsp;</td>
</tr>
</table>

<table cellpadding="2" cellspacing="2" summary="Geometry use definition">
<tr>
<td align="left" valign="top"><img src="../../../figures/ifcgridplacement-layout3.png" alt="with ref direction" border="0" height="300" width="400"></td>
<td style="vertical-align:bottom">
<p>Figure 5 illustrates the case where <em>PlacementRefDirection</em> is given as an <em>IfcDirection</em>- the object coordinate system is defined by:
<ul>
<li><u>its location</u>: given by the virtual grid intersection of <em>PlacementLocation</em></li>
<li><u>its x-axis direction</u>: given by the <em>DirectionRatios</em> of the <em>IfcDirection</em>, only the ratios for x and y are taken into account,</li>
</ul>
</td>
</tr>
<tr><td><p class="figure">Figure 5 &mdash; Grid placement with direction</p></td>
<td>&nbsp;</td>
</tr>
</table>

<table cellpadding="2" cellspacing="2" summary="Geometry use definition">
<tr><td align="left" valign="top"><img src="../../../figures/ifcgridplacement-layout2.png" alt="with ref direction" border="0" height="300" width="400"></td>
<td style="vertical-align:bottom">
<p>Figure 6 illustrates the case where <em>PlacementRefDirection</em> is given as an <em>IfcVirtualGridIntersection</em>- the object coordinate system is defined by:
<ul>
<li><u>its location</u>: given by the virtual grid intersection of <em>PlacementLocation</em></li>
<li><u>its x-axis direction</u>: given by the tangent of the line between the virtual grid intersection of the <em>PlacementLocation</em> and the virtual grid intersection of the <em>PlacementRefDirection</em>.</li>
</ul>
</td>
</tr>
<tr><td><p class="figure">Figure 6 &mdash; Grid placement with intersection</p></td>
<td>&nbsp;</td>
</tr>
</table>

<blockquote class="history">
HISTORY  New entity in IFC1.5. The entity name was changed from IfcConstrainedPlacement in IFC2x.
</blockquote>
<blockquote class="change-ifc2x4">
IFC4 CHANGE Attribute data type of <em>PlacementRefDirection</em> has been changed to <em>IfcGridPlacementDirectionSelect</em>.
</blockquote>